<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Array Cardio 💪</title>
  </head>
  <body>
    <p><em>Psst: have a look at the JavaScript Console</em> 💁</p>
    <script>
      // Get your shorts on - this is an array workout!
      // ## Array Cardio Day 1

      // Some data we can work with

      const inventors = [
        { first: "Albert", last: "Einstein", year: 1879, passed: 1955 },
        { first: "Isaac", last: "Newton", year: 1643, passed: 1727 },
        { first: "Galileo", last: "Galilei", year: 1564, passed: 1642 },
        { first: "Marie", last: "Curie", year: 1867, passed: 1934 },
        { first: "Johannes", last: "Kepler", year: 1571, passed: 1630 },
        { first: "Nicolaus", last: "Copernicus", year: 1473, passed: 1543 },
        { first: "Max", last: "Planck", year: 1858, passed: 1947 },
        { first: "Katherine", last: "Blodgett", year: 1898, passed: 1979 },
        { first: "Ada", last: "Lovelace", year: 1815, passed: 1852 },
        { first: "Sarah E.", last: "Goode", year: 1855, passed: 1905 },
        { first: "Lise", last: "Meitner", year: 1878, passed: 1968 },
        { first: "Hanna", last: "Hammarström", year: 1829, passed: 1909 },
      ];

      const people = [
        "Bernhard, Sandra",
        "Bethea, Erin",
        "Becker, Carl",
        "Bentsen, Lloyd",
        "Beckett, Samuel",
        "Blake, William",
        "Berger, Ric",
        "Beddoes, Mick",
        "Beethoven, Ludwig",
        "Belloc, Hilaire",
        "Begin, Menachem",
        "Bellow, Saul",
        "Benchley, Robert",
        "Blair, Robert",
        "Benenson, Peter",
        "Benjamin, Walter",
        "Berlin, Irving",
        "Benn, Tony",
        "Benson, Leana",
        "Bent, Silas",
        "Berle, Milton",
        "Berry, Halle",
        "Biko, Steve",
        "Beck, Glenn",
        "Bergman, Ingmar",
        "Black, Elk",
        "Berio, Luciano",
        "Berne, Eric",
        "Berra, Yogi",
        "Berry, Wendell",
        "Bevan, Aneurin",
        "Ben-Gurion, David",
        "Bevel, Ken",
        "Biden, Joseph",
        "Bennington, Chester",
        "Bierce, Ambrose",
        "Billings, Josh",
        "Birrell, Augustine",
        "Blair, Tony",
        "Beecher, Henry",
        "Biondo, Frank",
      ];

      // Array.prototype.filter()
      // 1. Filter the list of inventors for those who were born in the 1500's
      const result_1 = inventors.filter((i) => {
        return i.year <= 1599 && i.year >= 1500;
      });
      // Array.prototype.map()
      // 2. Give us an array of the inventors first and last names
      const result_2 = inventors.map((i) => {
        const { first, last } = i;
        let temp = {};
        temp = { first, last };
        return temp;
      });
      // Array.prototype.sort()
      // 3. Sort the inventors by birthdate, oldest to youngest
      const result_3 = inventors.sort((a, b) => {
        return a.year - b.year;
      });
      // Array.prototype.reduce()
      // 4. How many years did all the inventors live all together?
      const result_4 = inventors.reduce((acc, cur) => {
        return acc + (cur.passed - cur.year);
      }, 0);
      // 5. Sort the inventors by years lived
      const result_5 = inventors.sort((a, b) => {
        return b.passed - b.year - (a.passed - a.year);
      });
      // 6.create a lift of people that contain 'be' anywhere in the name
      const result_6 = people.filter((i) => {
        return i.toLowerCase().includes("be");
      });
      // 7. sort Exercise
      // Sort the people alphabetically by last name
      const result_7 = people.sort((a, b) => {
        const last_a = a.split(" ")[1];
        const last_b = b.split(" ")[1];
        return last_a > last_b; //用减法就都是NaN了
      });
      // 8. Reduce Exercise
      // Sum up the instances of each of these
      const data = [
        "car",
        "car",
        "truck",
        "truck",
        "bike",
        "walk",
        "car",
        "van",
        "bike",
        "walk",
        "car",
        "van",
        "car",
        "truck",
      ];
      const result_8 = data.reduce((acc, cur) => {
        if (!acc[cur]) {
          acc[cur] = 0;
        }
        acc[cur]++;
        return acc;
      }, {});
    </script>
  </body>
</html>
